'''
数字 n 代表生成括号的对数，请你设计一个函数，用于能够生成所有可能的并且 有效的 括号组合。
示例 1：
输入：n = 3
输出：["((()))","(()())","(())()","()(())","()()()"]
示例 2：
输入：n = 1
输出：["()"]
提示：
1 <= n <= 8
'''
class Solution:
    def generateParenthesis(self, n: int):
        if n==0:
            return []
        result = []
        self.helper(n,n,'',result)
        return result
    def helper(self,l,r,item,result):
        if r<l:
            return
        if l == 0 and r ==0:
            result.append(item)
        if l >0:
            self.helper(l-1,r,item+"(",result)
        if r > 0:
            self.helper(l,r-1,item+")",result)
if __name__=="__main__":
    solu = Solution()
    parenthesis= solu.generateParenthesis(3)
    print(parenthesis)